﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Dziennik_ProfilNauczyciela {
    public partial class Form_WidokNauczyciela : Form {
        public Form_WidokNauczyciela() {
            InitializeComponent();
            menu_zalogowanyJako.Text = "Użytkownik: " + SQLInterface.PobierzDaneOsobowe();
            dataGridView1.AutoGenerateColumns = false;
            dataGridView1.AllowUserToResizeRows = false;
            dataGridView1.AllowUserToResizeColumns = false;
            dataGridView1.SelectionChanged += new System.EventHandler(dataGridView1_SelectionChanged);
            OdswiezDrzewoOdbiorcow();
            OdswiezTabeleWiadomosci();
            timer1.Start();
            treeView_Odbiorcy.Sort();
            WypelnijListeKlas();
            button_WystawOcene.Enabled = false;
            button_WystawOceneWybranemuUczniowi.Enabled = false;
            button_WystawOceneCalejKlasie.Enabled = false;

            button_WystawOceneKoncowa.Enabled = false;
            button_WystawOceneKoncowaWybranemuUczniowi.Enabled = false;
            button_WystawOceneKoncowaCalejKlasie.Enabled = false;

            button_WystawZachowanie.Enabled = false;
            button_WystawPrzedmiotoweZachowanieWybranemuUczniowi.Enabled = false;
            button_WystawPrzedmiotoweZachowanieCalejKlasie.Enabled = false;

            button_WystawZachowanieKoncowe.Enabled = false;
            button_WystawZachowanieKoncoweWybranemuUczniowi.Enabled = false;
            button_WystawZachowanieKoncoweCalejKlasie.Enabled = false;
        }


        private void toolStripSplitButton1_ButtonClick(object sender, EventArgs e) {
        }

        private void menu_wyloguj_Click(object sender, EventArgs e) {
            this.DialogResult = System.Windows.Forms.DialogResult.Retry;
            SQLInterface.Logout();
            this.Close();
        }

        private void Form_WidokNauczyciela_FormClosed(object sender, FormClosedEventArgs e) {
            SQLInterface.Logout();
        }

        private void checkBox_Nauczyciele_CheckedChanged(object sender, EventArgs e) {
            OdswiezTabeleWiadomosci();
        }

        private void checkBox_Uczniowie_CheckedChanged(object sender, EventArgs e) {
            OdswiezTabeleWiadomosci();
        }

        private void checkBox_Opiekunowie_CheckedChanged(object sender, EventArgs e) {
            OdswiezTabeleWiadomosci();
        }

        private void pictureBox4_Click(object sender, EventArgs e) {
            checkBox_Nauczyciele.Checked = !checkBox_Nauczyciele.Checked;
        }

        private void pictureBox3_Click(object sender, EventArgs e) {
            checkBox_Uczniowie.Checked = !checkBox_Uczniowie.Checked;
        }

        private void pictureBox2_Click(object sender, EventArgs e) {
            checkBox_Opiekunowie.Checked = !checkBox_Opiekunowie.Checked;
        }

        private void dataGridView1_SelectionChanged(object sender, EventArgs e) {            
            if (dataGridView1.SelectedRows.Count != 1) {
                textBox_Tresc.Text = "";
                textBox_Nadawca.Text = "";
                textBox_Temat.Text = "";
                button_Odpowiedz.Enabled = false;
                
            }
            else {
                textBox_Tresc.Text = ((RekordTabeliWiadomosci)dataGridView1.SelectedRows[0].DataBoundItem).tresc;
                textBox_Temat.Text = ((RekordTabeliWiadomosci)dataGridView1.SelectedRows[0].DataBoundItem).temat;
                textBox_Nadawca.Text = ((RekordTabeliWiadomosci)dataGridView1.SelectedRows[0].DataBoundItem).nadawca;
                OznaczJakoPrzeczytane(new List<int>() { ((RekordTabeliWiadomosci)dataGridView1.SelectedRows[0].DataBoundItem).id });
                button_Odpowiedz.Enabled = true;
            }
        }

        private void button_ZaznaczWszystkie_Click(object sender, EventArgs e) {
            dataGridView1.SelectAll();
        }

        private void button_Usun_Click(object sender, EventArgs e) {
            List<int> listaIdDoUsuniecia = new List<int>();
            foreach (DataGridViewRow r in dataGridView1.SelectedRows) {
                listaIdDoUsuniecia.Add(((RekordTabeliWiadomosci)r.DataBoundItem).id);
            }
            UsunWiadomosci(listaIdDoUsuniecia);
            OdswiezTabeleWiadomosci();
        }

        private void button_OznaczJakoPrzeczytane_Click(object sender, EventArgs e) {
            List<int> listaId = new List<int>();
            foreach (DataGridViewRow r in dataGridView1.SelectedRows) {
                listaId.Add(((RekordTabeliWiadomosci)r.DataBoundItem).id);
            }
            OznaczJakoPrzeczytane(listaId);
        }

        private void tabControl1_SelectedIndexChanged(object sender, EventArgs e) {
            if (tabControl1.SelectedIndex == 0) {
                OdswiezTabeleWiadomosci();
                timer1.Start();
            }
            else timer1.Stop();
        }

        private void menu_pomoc_Click(object sender, EventArgs e) {
            (new Formularze.Pomoc()).ShowDialog();
        }

        private void dataGridView1_VisibleChanged(object sender, EventArgs e) {
            PogrubPrzeczytane();
        }

        private void button_Odpowiedz_Click(object sender, EventArgs e) {
            RekordTabeliWiadomosci w = (RekordTabeliWiadomosci)dataGridView1.SelectedRows[0].DataBoundItem;
            new Form_NapiszWiadomosc(w.nadawca, "Odp. " + w.temat, w.idNadawcy, w.ikona).ShowDialog();
        }

        private void treeView_Odbiorcy_DoubleClick(object sender, EventArgs e) {
            if (treeView_Odbiorcy.SelectedNode == null) return;
            if (treeView_Odbiorcy.SelectedNode.GetType() == typeof(TreeNode_Odbiorca)) {
                string odbiorca = treeView_Odbiorcy.SelectedNode.Text;
                int i = treeView_Odbiorcy.SelectedNode.Text.IndexOf(",");
                if (i > 0) odbiorca = odbiorca.Remove(i);
                int userIdOdbiorcy = ((TreeNode_Odbiorca)treeView_Odbiorcy.SelectedNode).userId;
                Bitmap ikona = (Bitmap)imageList1.Images[treeView_Odbiorcy.SelectedNode.ImageIndex];
                new Form_NapiszWiadomosc(odbiorca, "", userIdOdbiorcy, ikona).ShowDialog();
            }
        }

        private void textBox1_TextChanged(object sender, EventArgs e) {
            Wyszukaj(textBox1.Text);
        }

        private void menu_zmienHaslo_Click(object sender, EventArgs e) {
            new Form_ZmianaHasla().ShowDialog();
        }

        private void listView_ListaKlas_SelectedIndexChanged(object sender, EventArgs e) {
            OdswiezKarte(1);
        }

        private void listView_Przedmioty_SelectedIndexChanged(object sender, EventArgs e) {
            OdswiezKarte(2);
        }

        private void listView_Uczniowie_SelectedIndexChanged(object sender, EventArgs e) {
            OdswiezKarte(3);
        }

        private void tab_oceny_Click(object sender, EventArgs e) {

        }

        private void menu_odswiez_Click(object sender, EventArgs e) {
            if(sender != null && e != null) OdswiezTabeleWiadomosci();
            int i1 = -1, i2 = -1, i3 = -1;
            if (listView_ListaKlas.SelectedItems.Count == 1) {
                i1 = listView_ListaKlas.SelectedIndices[0];
            }
            if (listView_Przedmioty.SelectedItems.Count == 1) {
                i2 = listView_Przedmioty.SelectedIndices[0];
            }
            if (listView_Uczniowie.SelectedItems.Count == 1) {
                i3 = listView_Uczniowie.SelectedIndices[0];
            }
            listView_Uczniowie.SelectedItems.Clear();
            listView_Przedmioty.SelectedItems.Clear();
            listView_ListaKlas.SelectedItems.Clear();
            if (i1 != -1) {
                listView_ListaKlas.Items[i1].Selected = true;
            }
            if (i2 != -1) {
                listView_Przedmioty.Items[i2].Selected = true;
            }
            if (i3 != -1) {
                listView_Uczniowie.Items[i3].Selected = true;
            }
        }

        private void timer1_Tick(object sender, EventArgs e) {
            OdswiezTabeleWiadomosci();
        }

        private void button_WystawOceneWybranemuUczniowi_Click(object sender, EventArgs e) {
            string uczen = listView_Uczniowie.SelectedItems[0].SubItems[1].Text;
            string klasa = listView_ListaKlas.SelectedItems[0].Text;
            string przedmiot = listView_Przedmioty.SelectedItems[0].Text;
            int uid = Convert.ToInt32(listView_Uczniowie.SelectedItems[0].SubItems[2].Text);
            int pid = Convert.ToInt32(listView_Przedmioty.SelectedItems[0].Name);
            (new Wystawianie_ocen.WystawOcene(uczen, klasa, przedmiot, uid, pid)).ShowDialog();
            menu_odswiez_Click(null, null);            
        }        

        private void button_WystawOceneCalejKlasie_Click(object sender, EventArgs e) {
            (new Wystawianie_ocen.WystawOceneCalejKlasie(Convert.ToInt32(listView_ListaKlas.SelectedItems[0].Name), Convert.ToInt32(listView_Przedmioty.SelectedItems[0].Name))).ShowDialog();
            menu_odswiez_Click(null, null);       
        }        

        private void button_WystawPrzedmiotoweZachowanieWybranemuUczniowi_Click(object sender, EventArgs e) {
            (new Wystawianie_ocen.WystawZachowaniePrzedmiotowe()).ShowDialog();
            menu_odswiez_Click(null, null);
        }

        private void button_WystawPrzedmiotoweZachowanieCalejKlasie_Click(object sender, EventArgs e) {
            (new Wystawianie_ocen.WystawZachowaniePrzedmiotoweCalejKlasie()).ShowDialog();
            menu_odswiez_Click(null, null);
        }

        private void button_WystawOceneKoncowaWybranemuUczniowi_Click(object sender, EventArgs e) {
            (new Wystawianie_ocen.WystawOceneKoncowa()).ShowDialog();
            menu_odswiez_Click(null, null);
        }

        private void button_WystawOceneKoncowaCalejKlasie_Click(object sender, EventArgs e) {
            (new Wystawianie_ocen.WystawOceneKoncowaCalejKlasie(Convert.ToInt32(listView_ListaKlas.SelectedItems[0].Name), Convert.ToInt32(listView_Przedmioty.SelectedItems[0].Name))).ShowDialog();
            menu_odswiez_Click(null, null);
        }

        private void button_WystawZachowanieKoncoweWybranemuUczniowi_Click(object sender, EventArgs e) {
            (new Wystawianie_ocen.WystawZachowanieKoncowe()).ShowDialog();
            menu_odswiez_Click(null, null);
        }

        private void button_WystawZachowanieKoncoweCalejKlasie_Click(object sender, EventArgs e) {
            (new Wystawianie_ocen.WystawZachowanieKoncoweCalejKlasie()).ShowDialog();
            menu_odswiez_Click(null, null);
        }

        private void button_ZapiszZestawienieOcen_Click(object sender, EventArgs e) {
            if(listView_ListaKlas.SelectedItems.Count == 0 || listView_ListaKlas.SelectedItems[0].ImageIndex != 5) return;
            int idKlasy = Convert.ToInt32(listView_ListaKlas.SelectedItems[0].Name);
            ZestawienieOcenXml zestawienie = new ZestawienieOcenXml(idKlasy);
            zestawienie.SortujAZ();
            if (saveFileDialog1.ShowDialog() == DialogResult.OK) {
                zestawienie.zestawienie.Save(saveFileDialog1.FileName, System.Xml.Linq.SaveOptions.None);
            }
        }

        private void dodajUżytkownikaToolStripMenuItem_Click(object sender, EventArgs e) {
            (new Formularze.Form_DodajUzytkownika()).ShowDialog();
        }
    }
}
